﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ChurchDiary.TableEntity
{
    public class EntityDefaultLabels
    {
        [Display(Name = "DefaultKeyvalues", ResourceType = typeof(Resource.Resource))]
        public string DefaultKeyvalues { get; set; }
        [Display(Name = "IsRequired", ResourceType = typeof(Resource.Resource))]
        public string IsRequired { get; set; }
        [Display(Name = "KeyId", ResourceType = typeof(Resource.Resource))]
        public Guid KeyId { get; set; }
        [Display(Name = "KeyName", ResourceType = typeof(Resource.Resource))]
        public string KeyName { get; set; }
        [Display(Name = "KeyValue", ResourceType = typeof(Resource.Resource))]
        public string KeyValue { get; set; }
        [Display(Name = "KeyDesc", ResourceType = typeof(Resource.Resource))]
        public string KeyDesc { get; set; }
        [Display(Name = "Status", ResourceType = typeof(Resource.Resource))]
        public int status { get; set; }
        [Display(Name = "Action", ResourceType = typeof(Resource.Resource))]
        public string Action { get; set; }
    }
    [Table("CH_Notification")]
    public class EntityNotification
    {
        [Key]
        public Guid NotificationId { get; set; }
        public Guid? NotificationTo { get; set; }
        public Guid Notificationby { get; set; }
        public string NotificationString { get; set; }
        public string ControllerName { get; set; }
        public string ActionName { get; set; }
        public int ControllerActionsId { get; set; }
        public DateTime NotifationTime { get; set; }
        
        /// <summary>
        /// 0.Pending
        /// 1.Seen
        /// </summary>
        public int status { get; set; }

        public EntityControllerActions ControllerActions { get; set; }
        [NotMapped]
        public string time { get; set; }
        [NotMapped]
        public EntityUser User { get; set; }
        [NotMapped]
        public string Image { get; set; }
        [NotMapped]
        public string Name { get; set; }
    }
    [Table("CH_ControllerActions")]
    public class EntityControllerActions
    {
        [Key]
        public int ControllerActionsId { get; set; }
        public Guid ActionId { get; set; }
        public string ControllerName { get; set; }
        public string ActionName { get; set; }
        public string ActionDescription { get; set; }
        public string NotifcationTemplate { get; set; }
        public DateTime ActivatedTime { get; set; }
        public Guid? Createdby { get; set; }
        public Guid? Updatedby { get; set; }
        public DateTime UpdatedOn { get; set; }
        [DefaultValue(false)]
        public bool EmailStatus { get; set; }
        /// <summary>
        /// 1.Low
        /// 2.Mediem
        /// 2.High
        /// </summary>
        [DefaultValue(1)]
        public int Priorty { get; set; }
        [DefaultValue(1)]
        public int status { get; set; }
        [DefaultValue(false)]
        public bool IsDeleted { get; set; }
    }
    [Table("CH_DefaultConfig")]
    public class EntityDefaultConfig
    {
        [Key]
        public Guid KeyId { get; set; }
        public string KeyName { get; set; }
        public string KeyValue { get; set; }
        public string KeyDesc { get; set; }
        public int status { get; set; }
    }
    [Table("CH_Status")]
    public class EnitityStatus
    {
        [Key]
        public int StatusId { get; set; }
        public int Status { get; set; }
        public string StatusTypeName { get; set; }
    }
    [Table("CH_InitialSettings")]
    public class EntityInitialSettings
    {
        [Key]
        public Guid SettingsId { get; set; }
        public string SettingsName { get; set; }
        public int SettingsStatus { get; set; }
        public Guid UserTypeId { get; set; }
        public string PopupName { get; set; }
        public int OrderNo { get; set; }
    }
    [Table("CH_InitialUserSettings")]
    public class EnitityUserSettings
    {
        [Key]
        public Guid UserSettingsId { get; set; }
        public Guid SettingsId { get; set; }
        public int SettingsStatus { get; set; }
        public Guid Userid { get; set; }

    }
    public class EntityFullIntialSettings
    {
        public List<EntityInitialSettings> InitialSettings { get; set; }
        public List<EnitityUserSettings> UserSettings { get; set; }
    }
}
